package org.carl.redis.delay.queue.common;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @Description 入参
 * @Author chenqs
 * @Date 2023/8/1 2:01 PM
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Args implements Serializable {

    /**唯一键 不能为空**/
    private String id;

    /**
     * 已经重试的次数:
     * 重试机制: 默认重试2次; 总共最多执行3次
     * 添加任务的时候可以设置为<0 的值;则表示不希望重试;
     * 回调接口自己做好幂等
     ***/
    private int retryCount;
    /**
     * 最大重试次数，默认为5，可修改
     */
    private int maxRetryCount=5;


    /**
     * 重入次数:默认不重试
     * 这里标记的是当前Job某些异常情况导致并没有真正消费到,然后重新放入待消费池的次数;
     * 比如: BLPOP出来了之后,在去获取Job的时候redis超时了,导致没有正常消费掉;
     * 重入次数最大 3次; 避免某些不可控因素出现,超过3次则丢弃
     */
    private int reentry=-1;
}
